package com.imooc.pan.server.modules.user.service;

import com.imooc.pan.server.modules.user.context.*;
import com.imooc.pan.server.modules.user.entity.RPanUser;
import com.baomidou.mybatisplus.extension.service.IService;
import com.imooc.pan.server.modules.user.vo.UserInfoVO;

/**
 * @author lenovo
 * @description 针对表【r_pan_user(用户信息表)】的数据库操作Service
 * @createDate 2023-07-27 18:33:40
 */
public interface IUserService extends IService<RPanUser> {
    /**
     * 用户注册业务
     * <p></p>
     * 需要实现的功能点: <p>
     * 1、注册用户的信息
     * 2、创建新用户的根本目录信息
     * <p></p>
     * 实现的技术难点: <p>
     * 1、该业务式幂等的
     * 2、用户名全局唯一
     *
     * @param userRegisterContext
     * @return
     */
    Long register(UserRegisterContext userRegisterContext);

    String login(UserLoginContext userLoginContext);

    void exit(Long aLong);

    String checkUsername(CheckUsernameContext checkUsernameContext);

    String checkAnswer(CheckAnswerContext checkAnswerContext);

    void resetPassword(ResetPasswordContext resetPasswordContext);

    void changePassword(ChangePasswordContext changePasswordContext);

    UserInfoVO info(Long aLong);
}
